// 仓库中把数据存储在state
export const state = () => ({
  userInfo: {
    token: "",
    user: {}
  }
});

// 通过mutations对state内的数据赋值;不能进行异步操作
export const mutations = {
  // mutations是一个对象
  // 默认有一个参数 state
  setUserInfo(state, data) {
    // 赋值过程
    state.userInfo.token = data.token;
    state.userInfo.user = data.user;
  },
  // 清除用户数据
  // clearUserInfo(state) {
  //   state.userInfo = {};
  // }
};

// actions执行异步操作，拿到异步返回结果，再调用mutations方法，为state赋值；能进行异步操作（如setTimeout）
export const actions = {
  // setUserInfoActions(store, data) {
  //   // 调用mutations中的成员
  //   store.commit("setUserInfo", data);
  // },
  // 登录
  login({ commit }, data) {
    return this.$axios({
      method: "post",
      url: "/accounts/login",
      data
    }).then(res => {
      console.log(res); // 成功返回结果
      const data = res.data;
      // 保存到state
      commit("setUserInfo", data);
      return res;
    });
    // 这里不应该进行错误处理
  },
  // 注册
  register({ commit }, data){
    return this.$axios({
      url: "/accounts/register",
      method: "post",
      data
    }).then((res) => {
      const data = res.data;
      // 保存到state
      commit("setUserInfo", data);
      return res;
    })
  }
};
